package cn.tedu.tmall.front.mall.startup;

import cn.tedu.tmall.front.mall.service.ICategoryService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;


/**
 * 缓存预热
 * 类别树加载器
 * 从数据库加载类别到redis
 */
@Slf4j
@Component
public class CategoryLoader implements ApplicationRunner {


    /**
     * 不建议在loader 里直接写业务逻辑 ,应该委托给service
     * @param args
     * @throws Exception
     */
    //@Autowired
    //private RedisTemplate redisTemplate;

    @Autowired
    private ICategoryService categoryService;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.debug("ApplicationRunner 开始加载类别数据到redis");
        //抛异常了,比如数据库连接不上,你这个项目要不要让他启动成功
        // 业务流程
        // 1 从数据库查出来
        // 2 放到redis
        // 类别树用redis什么数据结构 hash? 能用
        categoryService.initCategory();
        log.debug("ApplicationRunner 加载类别数据到redis 成功");
    }

 /*   @PostConstruct
    public void init(){
        System.out.println("hello PostConstruct 开始加载数据了");
    }*/

   /* @Override  implements InitializingBean
    public void afterPropertiesSet() throws Exception {
        System.out.println("hello afterPropertiesSet 开始加载数据了");
    }*/
}
